#include "mmu_asm.h"

.equ DOM_0_MASK, 0xFFFFFFFC

.align
.global set_L1_address
set_L1_address:
	STMFD SP!, {LR}
	MCR P15, 0, R0, C2, C0, 0 @in R0 sollte die L1-Adresse übergeben werden 
	MOV R0, #0
	MRC P15, 0, R0, C2, C0, 0 @gib eingetrage L1 Base addresse zurück
	LDMFD SP!, {LR}
	MOV PC, LR


.align
.global enable_MMU
enable_MMU:
	STMFD SP!, {R1,LR}
	@***kopiert aus TRM 80***
	MRC p15,0,R1,C1,C0,0	@read control register
	ORR R1, #0x1
	MCR p15,0,R1,C1,C0,0	@enable MMUs
	@Fetch Flat
	@Fetch Flat
	@Fetch Translated
	@************************
	MOV R0, R0
	LDMFD SP!, {R1,LR}
	MOV PC, LR



.align
.global set_domain_rights_0 @(int rights);
set_domain_rights_0:
	STMFD SP!, {LR,R1}
	MRC P15, 0, R1, C3, C0, 0 	@Domänenregister holen
	AND R1, #DOM_0_MASK		@Bits nullen
	ORR R1, R0			@Bits auf rights setzen
	MCR P15, 0, R0, C3, C0, 0 	@Domänenregister zurückschreiben
	MOV R0, #0
	MRC P15, 0, R0, C3, C0, 0 	@gib neues Domänenregister zurück
	LDMFD SP!, {LR,R1}
	MOV PC, LR
	
.align
.global flush_tlb
flush_tlb:
	STMFD SP!, {R0,LR}
	MCR P15,0,R0,C8,C7,0	@TLB flushen
	LDMFD SP!, {R0,LR}
	MOV PC, LR

